技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
4
0
Mobile Development
菜雞 Android APP 從安裝 Android Studio 到上架 Google Play
系列 第
4
篇
Day4-Android APP 佈局
kotlin
android app
linrear layout
relative layout
constraintlayout
Deron
團隊
甘阿餒
2020-09-17 13:27:19
2562 瀏覽
分享至
佈局是什麼?
佈局有哪些?
Q:佈局是什麼?
A:佈局就是一個容器,可以裝一堆元件,也可以裝佈局
Q:佈局有哪些?
A:LinearLayout、RelativeLayout、ConstraintLayout等等 (今天先介紹這三種)
Q:既然佈局都是裝元件的,那我要這麼多種佈局幹嘛?
A:每一種佈局內部擁有的元件,
排列
、
對齊
方式都不一樣
下面我們用圖來看,會比較清楚
LinearLayout (線性佈局) ------ 第一種佈局
上圖這個APP畫面最外面 LinearLayout 包著 TextView,也包著另一個 LinearLayout。
從上圖可以知道 LinearLayout 這個佈局 ( 容器 )裡面的元件,有兩種對齊方式
垂直
-> 像是上圖最外層的 LinearLayout
水平
-> 像是內層下面那個 LinearLayout
我們以
蝦皮APP
為例子來分析一下
由於我們認識的元件還不多,這邊先大概理解就可以了!
上半部
最外層 ScrollView 這個元件可以讓內部的畫面滑動顯示
中間層 LinearLayout 當作畫面的佈局,意思是接下來內部的東西要垂直對齊
最內層 由前面解說發現,佈局其實也可以包住佈局,所以這裡四個不同區塊,可以是元件、也可以是佈局
下半部
水平的 LinearLayout 包進五個元件
這裡有一點要提醒大家:上面所說的都只是對這個畫面的
分析
,意味著這個畫面不一定是 100% 像我說的這樣製作出來,每位工程師的設計方式都會有些許差異,懂的工具多寡也會影響。
RelativeLayout (相對佈局) ------ 第二種佈局
假設我們最外層是 RelativeLayout 佈局,裡面有 A、B、C 三個元件
從左到右五張圖
第一張 -> 元件隨意擺放,尚未對齊
第二張
將 A 元件對齊 RelativeLayout 的左邊
將 A 元件對齊 RelativeLayout 的上面
第三張
將 B 元件對齊 A 元件的底下
將 B 元件對齊 RelativeLayout 的左邊
第四張
將 C 元件的 Top 對齊 B 元件的 Top
第五章
將 C 元件對齊 B 元件的右邊
結論:RelativeLayout 就是看你的元件想要在誰的附近,利用這種彼此相對的位子來對齊。當然也可以對齊外層包住自己的佈局
一樣讓我們找個畫面來分析看看
ConstraintLayout ------ 第三種佈局
ConstraintLayout 其實可以當作是
RelativeLayout 的升級版
除了相對關係的對齊方式以外,可以自己在畫面上加上一條
隱形的線
用以對齊
Q:這條線有什麼用處呢?
A:可以依照手機尺寸的比例,去設置你線的位置,再利用這條線的相對位置去對齊
優點1:你的 APP 在不同手機上,顯示不會差異太大
不管手機的螢幕尺寸、密度、解析度
優點2:不用像 RelativeLayout 一樣,一定得對著某個東西對齊
這條線是隱形的,意味著只有開發的你看的到,使用者不會看到他顯示在你的APP上。
優點3:也是最重要的一點,當畫面複雜時,ConstraintLayout 的效能會比 LinearLayout 和 RelativeLayout 好很多。
這點我們後面再解釋,先知道這個東西很讚就對了!
ConstraintLayout 的範例我就不放了,基本上,上面的範例都可以藉由這種
隱形線+相對位置
去對齊達到效果。
今天我們認識了三個重要的
佈局
,明天我們要認識一些基本的
元件
,熟悉之後,我們會再舉一些有名的 APP,去分析一下上面的效果分別是對應到哪個元件。
留言
追蹤
檢舉
上一篇
Day3-Android APP 設計畫面的地方
下一篇
Day5 - Android LinearLayout 佈局使用
系列文
菜雞 Android APP 從安裝 Android Studio 到上架 Google Play
共
30
篇
目錄
RSS系列文
訂閱系列文
19
人訂閱
26
Day26 - 設定路由器防火牆開通HTTP、80與HTTPS 443 Port
27
Day27 - Google Play Console
28
Day28 - Build APK & 發佈審核
29
Day29 - 回顧這個月做的事情
30
Day30 - Android APP 最後一天
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19446
篇
完賽人數
530
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
【已解決】鐵人賽每天發表,還是一樣被斷賽了!?有人是一樣的嗎?
Windows 11 專業版 (筆電) 重灌
Win2008R2 AD無法派送印表機到 Win11 的電腦,可以用網域內的win11電腦部屬派送至其他成員電腦嗎?
Windows 2008 R2 AD無法派送印表機到 Window 11 的電腦
How to integrate an online electricity bill API on a website?
閱讀 [技術文章] 的需求建議~
google 試算表 App Scripts 問題
zimbra blocked using cblless.anti-spam.org.cn
OCS Inventory NG
熱門回答
Windows 2008 R2 AD無法派送印表機到 Window 11 的電腦
Windows 11 專業版 (筆電) 重灌
How to integrate an online electricity bill API on a website?
google 試算表 App Scripts 問題
Win2008R2 AD無法派送印表機到 Win11 的電腦,可以用網域內的win11電腦部屬派送至其他成員電腦嗎?
熱門文章
[為你自己學 n8n] 第 28 天,網友許願之電子採購網
[為你自己學 n8n] 第 30 天,n8n 之我獨自備份 n8n!
[ Day 30 ] 資料專案的各式小撇步,私房秘訣大公開
Day 30 - 完賽總結:從 Canvas 到各式各樣的 Web API 之旅 🎉
資安入門與實務應用介紹 17:Windows 系統安全機制(UAC、BitLocker、Windows Update、Defender)
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}